class Solution {
public:
    ListNode* reverseKGroup(ListNode* head, int k) {
        ListNode* cur=head;
        int len=0;
        while(cur)
        {
            cur=cur->next;
            len++;
        }
        len/=k;//要翻转几次
        ListNode* newhead=new ListNode(0);
        ListNode* tail=newhead;
        cur=head;
        
        for(int i=0;i<len;i++)
        {
           ListNode* tmp=cur;
           for(int i=0;i<k;i++)
           {
             ListNode* next=cur->next;
             cur->next=tail->next;
             tail->next=cur;
             cur=next;
           }
           tail=tmp;
        }
        tail->next=cur;
        cur=newhead->next;
        delete newhead;
        return cur;
    }
};